/**
*  
* @Function 唯一ID生成 
* @ProjectName credit-data-platform 
* @PackageName com.py.credit.utils    
* @FileName UniqueIdUtils.java    
* @Date 2018年10月19日上午10:37:17
* @Author Min DongXv
* @Copyright (c) 2018, 金电联行 All Rights Reserved.   
*   
*/  
package com.py.credit.utils;

import java.text.SimpleDateFormat;
import java.util.concurrent.ThreadLocalRandom;

import org.apache.commons.lang3.StringUtils;

/**
 * 
 * @Function 唯一ID生成
 * @ClassName UniqueIdUtils
 * @Date 2018年10月19日 上午10:37:17
 * @Author Min DongXv
 * 
 */
public class UniqueIdUtils {

	private static final long DAY_MILL_SECONDS = 24 * 60 * 60 * 1000L;

	private static final int NUM_9999 = 9999;

	/**
	 *
	 * @Function 生成唯一文件名
	 * @FileName UniqueIdUtils.java
	 * @MethodName createFileName
	 * @param prefix
	 *            文件前缀
	 * @Date
	 * @Author Min DongXv
	 *
	 */
	public static String createFileName(String prefix, String split) {
		StringBuilder sb = new StringBuilder(32);
		String time = new SimpleDateFormat("yyyyMMdd").format(new java.util.Date());
		String head = String.format("%09d", System.currentTimeMillis() % DAY_MILL_SECONDS);
		String body = String.format("%03d", Thread.currentThread().getId());
		String foot = String.format("%04d", ThreadLocalRandom.current().nextInt(NUM_9999));
		split = StringUtils.isNotBlank(split) ? split : "";
		sb.append(prefix).append(time).append(split).append(head).append(split).append(body).append(split).append(foot);
		return sb.toString();
	}

	public static void main(String[] args) {
		System.out.println(createFileName("BR", null));
	}
}
